package org.dromara.common.core.function;

import java.util.function.Consumer;

/**
 * 空值处理函数
 *
 * @author zlj
 * @since 2023/1/10
 */
@FunctionalInterface
public interface NullHandleFunction<T> {

	/**
	 * 分支处理函数
	 * @param notNull 非空分支逻辑
	 * @param isNull  空值分支逻辑
	 */
	void notNullOrNullHandle(Consumer<T> notNull, Consumer<T> isNull);

	/**
	 * 非空分支处理函数
	 * @param notNull 非空分支逻辑
	 */
	default void notNullHandle(Consumer<T> notNull) {
		this.notNullOrNullHandle(notNull, t -> {});
	}

	/**
	 * 空值分支处理函数
	 * @param isNull 空值分支逻辑
	 */
	default void nullHandle(Consumer<T> isNull) {
		this.notNullOrNullHandle(t -> {}, isNull);
	}
}
